#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int g_val=100;
int main()
{
    pid_t id=fork();
    if(id==0)
    {//子进程
        int cnt=3;
        while(1)
        {
            printf("I am child, pid:%d, ppid:%d, g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
            sleep(1);
            if(cnt) cnt--;
            else{
                g_val=200;
                printf("子进程change g_val:100->200\n");
                cnt--;
            }
        }
    }
    else{
        //父进程
        while(1)
        {
            printf("I am parent, pid:%d, ppid:%d, g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
            sleep(1);
        }
    }
    return 0;
}
//int g_val1;
//int g_val2=100;
 //   int main
//{
  //  printf("code addr: %p\n",main);
  //  const char *str="hello linux";
  //  printf("read only string addr: %p\n",str);
  //  printf("init global value addr: %p\n",&g_val2);
  //  printf("uninit global value addr: %p\n",&g_val1);
  //  char*mem=(char*)malloc(100);
  //  printf("heap addr: %p\n",mem);
  //  printf("stack addr: %p\n",&mem);
//    return 0;
//}
